Techniques for Displaying Information for Collection Hierarchies

ABSTRACT

Techniques for displaying information related to collection hierarchies. In one embodiment, an integrated direct-manipulation image-based interface is provided for displaying information related to collections. The interface also enables operations to be performed on collections and their elements. Multiple levels of the collection hierarchy are made visible and editable at the same time by the user interface.

BACKGROUND OF THE INVENTION

The present invention relates to visualization of information and moreparticularly to techniques for displaying information related tocollection hierarchies.

The concept of collections is integral to several fields. For example,collections are commonly used to show containment relationship. Acollection may comprise several elements, one or more of which maythemselves be collections, and so on. There may be several levels to acollection hierarchy with a collection comprising a subcollection, thesubcollection comprising another collection, and so on. Improvedtechniques are desired for depicting information related to collections.

BRIEF SUMMARY OF THE INVENTION

Embodiments of the present invention provide techniques for displayinginformation related to collection hierarchies. In one embodiment, anintegrated direct-manipulation image-based interface is provided fordisplaying information related to collections. The interface alsoenables operations to be performed on collections and their elements.Multiple levels of the collection hierarchy are made visible andeditable at the same time by the user interface.

According to an embodiment of the present invention, techniques areprovided for displaying information related to collections. In oneembodiment, a graphical object representative of a collection isdisplayed. The graphical object representing the collection has a boundsassociated with it that defines an area of a certain shape and size anda grid of tiled cells on a 2-dimensional plane, wherein each element inthe collection is associated with one or more cells of the grid. Thecells of the grid may be of the same shape and size or of differentshapes and sizes. A graphical object is displayed for each element inthe collection such that the graphical object for an element isdisplayed based upon the one or more cells of the grid associated withthe element represented by the graphical object. Displaying of graphicalobjects for the elements in the collection comprises scaling andpositioning the grid such that all graphical objects representing theelements of the collection are displayed within the area defined by thebounds of the graphical object representing the collection.

In one embodiment, the grid of the graphical object representing thecollection may be positioned such that a centroid of a span of cells ofthe grid associated with the elements of a collection is the same as acentroid of the graphical object representing the collection. Scalingthe grid may comprise scaling the grid such that all graphical objectsrepresenting the elements of the collection are displayed as large aspossible.

In one embodiment, a first and a second bounds may be associated withthe graphical object representing a collection. The area defined by thesecond bounds may be such that it is within the area defined by thefirst bounds of the graphical object representing the collection. Thegraphical objects representing the elements of the collection may bedisplayed within the second bounds of the graphical object representingthe collection.

The elements of a collection may be a non-collection element or acollection element. Multiple levels of a collection hierarchy may exist.For example, a collection may comprise an element that is anothercollection which in turn may comprise one or more elements that arecollections, and so on. The user interface according to an embodiment ofthe present invention displays graphical objects depicting collectionsat the multiple levels and elements of the collections. At each level,graphical objects are displayed such that graphical objects representingelements within a collection are displayed within the bounds of agraphical object representing the collection.

In one embodiment, a cell of a grid associated with a graphical objectrepresenting a collection may be assigned or associated with at most oneelement of the collection. In other embodiments, a cell of the grid maybe associated with multiple elements of the collection.

According to an embodiment of the present invention, when displaying agraphical object representing a collection and graphical objects forelements of the collection, the grid associated with the graphicalobject representing the collection may be iteratively scaled andpositioned such that all the cells of the grid that are associated withthe elements of the collection are positioned within the graphicalobject representing the collection. As part of displaying the graphicalobjects for the elements of a collection, for at least one element fromthe collection, a set of cells of the grid associated with thecollection graphical object are determined that are associated with theat least one element. The graphical object representing the at least oneelement is then displayed in a position corresponding to the set ofcells of the grid. A minimum bounding box may also be determined basedupon the set of cells. The grid associated with a graphical objectrepresenting a collection may or may not be displayed.

According to an embodiment of the present invention, the graphicalobjects displayed for collections and their elements are individuallyselectable. One or more graphical objects may be selected at a time. Oneor more operations may be performed on the selected graphical objects.In one embodiment, the operation performed on a selected graphicalobject is performed on an element or collection represented by theselected graphical object.

Various different operations may be performed. In one embodiment, a newelement may be added to a collection. This may cause the user interfaceand graphical objects displayed for the collection to be redisplayed.The grid associated with the graphical object representing thecollection may be scaled and positioned such that all cells of the gridassociated with the elements of the collection, including the newelement, are positioned within the bounds of the graphical objectrepresenting the collection. Graphical objects representing the elementsof the collection are redisplayed such that the graphical object for anelement is displayed in a position corresponding to the one or morecells of the grid associated with the element and the graphical objectsrepresenting the elements of the collection are displayed within thebounds of the graphical object representing the collection.

In one embodiment, an element may be deleted from a collection and maycause the graphical objects for the collection and its elements to beredisplayed. The grid associated with the graphical object representingthe collection may be scaled and positioned such that all cells of thegrid associated with elements of the collection, excluding the deletedelement, are positioned within the bounds of the graphical objectrepresenting the collection. Graphical objects representing the elementsof the collection are redisplayed such that the graphical object for anelement is displayed in a position corresponding to the one or morecells of the grid associated with the element and the graphical objectsrepresenting the elements of the collection are displayed within thebounds of the graphical object representing the collection.

In yet another embodiment, information may be received indicative of achange in size or position of a graphical object representing a firstelement in a collection. The grid associated with the graphical objectrepresenting the collection may be scaled and positioned such that allcells of the grid associated with elements of the collection, includingthe first element, are positioned within the bounds of the graphicalobject representing the collection. Graphical objects for elements inthe collection may be redisplayed such that the graphical object for anelement is displayed in a position corresponding to the one or morecells of the grid associated with the element and the graphical objectsrepresenting the elements of the collection are displayed within thebounds of the graphical object representing the collection.

The foregoing, together with other features, embodiments, and advantagesof the present invention, will become more apparent when referring tothe following specification, claims, and accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a simplified block diagram of a computer system that mayincorporate an embodiment of the present invention;

FIGS. 2A, 2B, and 2C depict examples in which collection information isdisplayed according to an embodiment of the present invention;

FIGS. 3A and 3B depict user interfaces displaying graphical objectsalong with a grid according to an embodiment of the present invention;

FIG. 4 is a simplified high-level flowchart depicting a method ofdisplaying graphical objects for a collection and elements of thecollection according to an embodiment of the present invention;

FIG. 5 is a simplified high-level flowchart depicting a method ofdisplaying graphical objects for a collection and its elements accordingto an embodiment of the present invention wherein the grid associatedwith an graphical object representing the collection comprises regularshaped cells;

FIG. 6 depicts margin parameters used to determine an inner bounds for agraphical object according to an embodiment of the present invention;

FIG. 7 is a simplified high-level flowchart depicting a generalizedmethod of displaying graphical objects for a collection and its elementsaccording to an embodiment of the present invention; and

FIGS. 8A, 8B, 8C, 8D, 8E, 8F, 8G, 8H, 8I, 8J, and 8K depict examples ofgraphical objects drawn according to an embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, for the purposes of explanation, specificdetails are set forth in order to provide a thorough understanding ofthe invention. However, it will be apparent that the invention may bepracticed without these specific details.

Embodiments of the present invention provide techniques for displayinginformation related to collection hierarchies. In one embodiment, anintegrated direct-manipulation image-based interface is provided fordisplaying information related to collections. The interface alsoenables operations to be performed on collections and their elements.Multiple levels of the collection hierarchy are made visible andeditable at the same time by the user interface.

FIG. 1 is a simplified block diagram of a computer system 100 that mayincorporate an embodiment of the present invention. Computer system 100depicted in FIG. 1 is merely illustrative of an embodiment incorporatingthe present invention and is not intended to limit the scope of theinvention as recited in the claims. Embodiments of the present inventionmay be incorporated into various other systems and devices. One ofordinary skill in the art would recognize other variations,modifications, and alternatives.

As depicted in FIG. 1, computer system 100 comprises a processor 102,memory 104, renderer 106, one or more output devices 108, one or moreinput devices 110, and a network interface 112. The various componentsof computer system 100 communicate with each other using bus subsystem114. While one bus subsystem is shown in the embodiment depicted in FIG.1, alternative embodiments may utilize multiple bus subsystems.

Network interface 112 provides an interface to other computer systemsand networks. Network interface 112 provides an interface for receivingdata from other sources and for transmitting data to other sources fromcomputer system 100. Embodiments of network interface 112 include anEthernet card, a modem (telephone, satellite, cable, ISDN, etc.),(asynchronous) digital subscriber line (DSL) units, and the like.

Processor 102 is configured to perform processing for displayingcollections information according to an embodiment of the presentinvention. For example, processor 102 may be configured to execute codemodules or instructions 118 that cause the processor to performprocessing to display information related to collections. The codemodules or instructions 118 may be stored in memory 104. Processor 102may also perform other functions performed by computer system 100.Processor 102 may also control the functioning of other subsystems ofcomputer system 100.

Information 120 related to one or more collections may be stored inmemory 104 (depicted as collections information 120). Processor 102 mayuse collections information 120 to draw graphical objects representingthe collections according to the teachings of the present invention.Collections information 118 may also be stored in memory locationsremote to computer system 100 such as on one or more systems or serversthat can be accessed by computer system 100 using network interface 112.The collections information may also be stored on storage devices thatare made accessible to computer system 100.

Collections information 120 comprises information related to one or morecollections and the elements contained by the collections. A collectionmay contain zero or more elements. A collection with zero elements is anempty collection. An element of a collection may itself be anothercollection containing zero or more elements or a non-collection element.As a result, multiple levels of collections hierarchy may exist with afirst collection comprising an element which is a collection, which inturn may comprise an element which is another collection, and so on.Examples of collections include a folder, a directory, a bag, a set,etc. An element of a collection may be a document (e.g., an image, a webpage, an editable document), a media object (e.g., an audio clip), alink (e.g., a URL), and the like.

According to an embodiment of the present invention, collections aredepicted using one or more graphical objects. A graphical object isdisplayed for a collection and for each element of the collection. Thegraphical objects representing the collection and its elements aredisplayed such that the graphical objects for the elements are displayedcompletely within the boundary of the graphical object representing thecollection containing the elements. In this manner, the containmentrelationship between a collection and its elements is clearly visuallydisplayed to a user.

Multiple levels of a collection hierarchy may be displayed usinggraphical objects. For example, consider a scenario where a firstcollection comprises an element that is another collection (a secondcollection) that in turn comprises one or more elements. In thisscenario, a graphical object is displayed for the first collection. Agraphical object is displayed for each element of the first collection,including the second collection, such that the graphical objects aredisplayed within the boundaries of the graphical object representing thefirst collection. Further, a graphical object is displayed for eachelement of the second collection in such a way that the graphicalobjects representing elements of the second collection are displayedwithin the boundaries of the graphical object representing the secondcollection. The graphical objects are displayed such that multiplelevels of the collection hierarchy are visible at the same time.Further, in one embodiment, the graphical objects are drawn such thateach of the graphical objects is individually selectable using an inputdevice such as a mouse, trackball, touchpad, pen, etc. and any of thegraphical objects may be selected at a time. Operations may be performedusing the selected graphical objects. Performing an operation on agraphical object translates to performing the operation on thecollection or element, which may be a collection or a non-collection,represented by the graphical object. In this manner, an integrateddirect-manipulation image-based interface is provided for displaying andmanipulating collections and their elements.

Information 122 stored in memory 104 relates to graphical objects andassociated information that is used to display the collectionshierarchy. Information 122 may also be stored in other memory locationsaccessible to computer system 100 such as on one or more systems orservers that are remote from computer 100 and that can be accessed bycomputer system 100 using network interface 112. Processor 102 may useinformation 122 to display the collections information. Information 122may comprise information related to the size and shape of the graphicalobjects, colors or patterns to be used for displaying the objects, andother attributes associated with the graphical objects.

Renderer 106 is configured to render or draw the graphical objectsrepresenting collections and their elements on a display. Renderer 106may receive information from processor 102 and use the information todraw graphical objects for collections and their elements at multiplelevels of hierarchy. In one embodiment, renderer 106 may be a specialpurpose graphics processing unit (GPU) such as GPUs provided by ATI™,NVIDIA™, or the like. In the embodiment depicted in FIG. 1, renderer 106is provided in addition to a processor 102 and may work in conjunctionwith processor 102 to perform the graphics processing. In alternativeembodiments, renderer 106 may be part of processor 102 or processor 106may be configured to perform the processing performed by renderer 106.

Computer system 100 may comprise one or more output devices 108. Outputdevices 108 may include a visual output device such as a screen ormonitor or projector that displays the collections information accordingto an embodiment of the present invention. For example, graphicalobjects representing a collection and its elements may be displayed on ascreen or monitor.

Input devices 110 enable a user of system 100 to interact with andprovide information to system 100. Input devices 110 may include wiredor wireless devices such as a keyboard, pointing devices such as amouse, trackball, touchpad, or graphics tablet, a scanner, a touchscreenincorporated into the display, audio input devices such as voicerecognition systems, microphones, and other types of input devices. Ingeneral, an input device may refer to any device or mechanism that maybe used for inputting information to system 100. A user may use an inputdevice such as a mouse, trackball, touchpad, pen, etc. to select andmanipulate one or more of the graphical objects depicting collections ornon-collections displayed on an output device.

Memory 104 provides a repository for storing the programming and dataconstructs that provide the functionality of the present invention. Forexample, a computer program or software code modules (or instructions)118 implementing the functionality of the present invention may bestored in memory 104. These modules/instructions may be executed byprocessor 102. Memory 104 may also provide a repository for storing dataused in accordance with the present invention such as collectionsinformation 120 and graphical objects information 122. In oneembodiment, memory 104 may also store rendered images of graphicalobjects that may be displayed via a display device.

Memory 104 may include a number of memories including a main randomaccess memory (RAM) for storage of instructions and data during programexecution and a read only memory (ROM) in which fixed instructions arestored. Memory 104 may also comprise subsystems that provide persistent(non-volatile) storage and caching for program and data files, and mayinclude a hard disk drive, a floppy disk drive along with associatedremovable media, a Compact Disk Read Only Memory (CD-ROM) drive, anoptical drive such as a DVD, removable media cartridges, flash memory,and other like storage media.

Computer system 100 can be of various types including a personalcomputer, a portable computer, a workstation, a network computer, amainframe, a kiosk, a photocopier, a printer, a multi-function printer(MFP), or any other data processing system. Due to the ever-changingnature of computers and networks, the description of system 100 depictedin FIG. 1 is intended only as a specific example for purposes ofillustrating the preferred embodiment of a processing system. Many otherconfigurations having more or fewer components than the system depictedin FIG. 1 are possible.

FIGS. 2A, 2B, and 2C depict examples in which collection information isdisplayed according to an embodiment of the present invention. Theinformation may be displayed on an output device such as a screen ormonitor. FIG. 2A displays information for a collection that containsthree non-collection elements. As depicted in FIG. 2A, graphical objectsare displayed representing the collection and its elements. A graphicalobject 200 is displayed representing the collection. Graphical objects202, 204, and 206 are displayed representing elements of the collection.As depicted in FIG. 2A, graphical objects 202, 204, and 206 representingthe elements are displayed within the boundary 210 of graphical object200 representing the collection thereby visually depicting that theelements represented by graphical objects 202, 204, and 206 arecontained within the collection represented by graphical object 200.Each of the graphical objects depicted in FIG. 2A are individuallyselectable for performing operations.

The example depicted in FIG. 2B assumes a hierarchy of collections. Agraphical object 210 is displayed representing a first collection. Thefirst collection contains two elements. Graphical objects 212 and 214representing the elements of the first collection are displayed withinthe boundaries of graphical object 210 representing the firstcollection. One of the elements (represented by graphical object 214) ofthe first collection is also a collection (a second collection)comprising two elements. Graphical objects 216 and 218 are displayedrepresenting the elements of the second collection. Graphical objects216 and 218 are displayed within the boundaries of graphical object 214representing the second collection. The element represented by graphicalobject 218 is also a collection (a third collection). Two graphicalobjects 220 and 224 are displayed representing the elements of the thirdcollection. Graphical objects 220 and 224 are displayed within theboundaries of graphical object 218 representing the third collection.

The graphical objects displayed in FIG. 2B visually convey informationthat a first collection comprises two elements, one of the elementsbeing a collection (second collection) comprising two elements, whereone of the elements of the second collection is another collection(third collection) comprising two elements. In this manner, multiplelevels of the collection hierarchy are displayed at the same time. Themanner in which the graphical objects are displayed clearly visuallyindicates information regarding the containment relationship between thedifferent elements and collections. Each of the graphical objectsdepicted in FIG. 2B is individually selectable using an input devicesuch as a mouse, trackball, touchpad, pen, etc. Different techniques maybe used for showing a selected graphical object such as emphasizing theborder of the selected graphical object, changing the color of theselected graphical object, etc. One or more operations may be performedon a selected graphical object.

In the example depicted in FIG. 2C, a first collection comprises twoelements, both of which are collections (a second collection and a thirdcollection). The second collection comprises two elements. The thirdcollection comprises one element which is a collection (a fourthcollection). The fourth collection contains four elements. Graphicalobjects are displayed representing the collections and their elements. Agraphical object 230 is displayed representing the first collection.Graphical objects 232 and 234 are displayed representing the elements ofthe first collection with graphical object 232 representing the secondcollection and graphical object 234 representing the third collection.Graphical objects 236 and 238 are displayed representing elements of thesecond collection. Graphical object 240 is displayed representing theelement contained by the third collection. Graphical objects 242, 244,246, and 248 are displayed representing elements contained by the fourthcollection. In this manner, multiple levels of the collection hierarchyare displayed at the same time. The manner in which the graphicalobjects are displayed clearly identifies the containment relationshipbetween the different elements and collections. Each of the graphicalobjects depicted in FIG. 2C is individually selectable for performingoperations. For example, the displayed graphical objects may be selectedusing an input device such as a mouse, trackball, touchpad, pen, etc.Different techniques may be used for showing a selected graphical objectsuch as emphasizing the border of the selected graphical object,changing the color of the selected graphical object, etc.

The graphical objects may be displayed in various different ways. In oneembodiment, different colors may be used to display the graphicalobjects such that the containment relationship is clearly visible.Different shapes and sizes may be used for displaying the graphicalobjects. A graphical object for an element may also comprise arepresentation that visually identifies a characteristic of the elementrepresented by the graphical object. For example, the graphical objectmay display information that identifies the contents of the elementrepresented by the graphical object. For instance, in an embodimentwhere the elements are documents, a graphical object for a document maydisplay a visual representation generated based upon the contents of thedocument.

In order to facilitate display of the collection hierarchy, graphicalobjects have attributes associated with them. As described above, agraphical object may be used to depict a collection or a non-collection.Accordingly, in one embodiment, the type of attributes associated with agraphical object may depend upon whether the graphical object is used torepresent a collection or a non-collection. For example, the attributesassociated with a graphical object used to depict a collection mayinclude an outer bounds, an inner bounds, and a grid associated with agraphical object while the attributes associated with a graphical objectused to depict a non-collection may not have an associated grid. Inother embodiments, the attributes associated with a graphical object maybe the same irrespective of whether the graphical object is used todepict a collection or a non-collection.

As previously stated, a graphical object may have an outer boundsattribute associated with it. The outer bounds of a graphical object isa boundary that defines the outer boundary or periphery of the graphicalobject. The outer bounds of a graphical object defines an area of thegraphical object that is contained within the outer bounds of thegraphical object. The outer bounds of a graphical object thus implicitlydefines the size and shape of the graphical object.

The inner bounds of a graphical object is a boundary that is equal to orless than the outer bounds of the graphical object. The inner bounds ofa graphical object may be the same as the outer bounds of the graphicalobject. Alternatively, the inner bounds of a graphical object may mark aboundary that is within the outer bounds of the graphical object. Forexample, the inner bounds for a graphical object may be determined byshrinking the outer bounds by a certain amount. In one embodiment, theinner bounds is calculated based upon the outer bounds of the graphicalobject by subtracting a value from the outer bounds. The value that issubtracted from the outer bounds to generate the inner bounds may bedifferent in different dimensions and directions. For example, thesubtracted value may be different in the horizontal and verticaldimensions. In general, the inner bounds of a graphical object definesan area of the graphical object that is within the area defined by theouter bounds of the graphical object.

A graphical object may have an associated grid of tiled cells on a2-dimensional plane. A tiling is a collection of cells which do notoverlap and which completely cover the 2-D area in question. In oneembodiment, the tiling may be regular-shaped implying that all the cellsof the grid are of the same shape and size. In alternative embodiments,the cells of a grid may have different shapes and/or sizes. Examples ofa grid of tiled cells include a rectangular grid of polygons, a jigsawpuzzle, and others.

If a graphical object represents a collection, then each element of thecollection is assigned or associated with one or more cells of the gridof the graphical object. In one embodiment, a cell of the grid may beassociated with two or more different elements of the collection. Inanother embodiment, each cell of the grid may be associated with at mostone element from the collection.

The association between elements of a collection and cells of a gridassociated with a graphical object representing the collection is usedfor displaying graphical objects representing the elements of thecollection. In one embodiment, when displaying a graphical object for anelement of a collection, the graphical object for the element isdisplayed such that it occupies the one or more cells of the gridassociated with the element represented by the graphical object. Thegrid of a graphical object representing the collection is positioned andscaled such that all the cells of the grid associated with one or moreelements of the collection are located within the bounds (typicallyinner bounds) of the graphical object. In this manner, the graphicalobjects representing the elements of the collection, which arepositioned in the cells associated with the corresponding elements, arealso all displayed within the bounds of the graphical objectrepresenting the collection. Scaling may involve changing the size ofthe cells of the grid which may involve shrinking the cells or expandingthe size of the cells. Positioning may involve translating the grid inone or more directions. The grid associated with a graphical objectitself may or may not be displayed. Whether or not a grid is displayedmay be user-configurable.

FIG. 3A depicts a user interface displaying graphical objects along witha grid according to an embodiment of the present invention. The exampledepicted in FIG. 3A assumes a collection comprising three elements,where the elements are not collections (i.e., are non-collections). Agraphical object 300 is displayed representing the collection. A grid302 associated with graphical object 300 is displayed. The exampleassumes that a first element of the collection is associated with cells304 and 306 of grid 302, a second element of the collection isassociated with cells 308 and 310 of grid 302, and the third element ofthe collection is associated with cell 312 of grid 302. Accordingly, asdepicted in FIG. 3A, a graphical object 314 representing the firstelement is displayed in cells 304 and 306 that are associated with thefirst element, a graphical object 316 representing the second element isdisplayed in cells 308 and 310 that are associated with the secondelement, and a graphical object 318 representing the third element isdisplayed in cell 312 associated with the third element. In the processof rendering graphical objects 314, 316, and 318, grid 302 is scaled andpositioned such that graphical objects 314, 316, and 318 are allcompletely displayed within the bounds of graphical object 300representing the collection. The display of grid 302 may be turned on oroff.

FIG. 3B depicts another user interface displaying graphical objectsalong with a grid according to an embodiment of the present invention.The example depicted in FIG. 3B assumes a first collection comprisingfour elements, where one of the elements is also a collection (a secondcollection). The second collection comprises three non-collectionelements. A graphical object 320 is displayed representing the firstcollection. A grid 322 associated with graphical object 320 isdisplayed. Graphical objects 324, 326, 328, and 330 representing thefour elements of the first collection are displayed. Graphical objects324, 326, 328, and 330 are drawn in grid cells assigned to the elementsthat the graphical objects represent. The objects are displayed withinthe bounds of graphical object 320 representing the first collection.This is achieved by scaling and positioning grid 322 such that cells ofgrid 322 associated with the elements of the first collection are allwithin the bounds of graphical object 320. The graphical objects 324,326, 328, and 330 are also thus completely displayed within the boundsof graphical object 320. The display of grid 322 may be turned on oroff.

In the example depicted in FIG. 3B, the element represented by graphicalobject 330 is another collection containing three elements. Graphicalobject 330 has a grid 332 associated with it. Graphical objects 334,336, and 338 representing the three elements of the second collectionare displayed. Graphical objects 334, 336, and 338 are drawn in gridcells assigned to the elements that the graphical objects represent. Theobjects are displayed within the bounds of graphical object 330representing the second collection. This is achieved by scaling andpositioning grid 332 such that cells of grid 332 associated with theelements of the second collection are all within the bounds of graphicalobject 330. The graphical objects 334, 336, and 338 are also thuscompletely displayed within the bounds of graphical object 330. Thedisplay of grid 332 may be turned on or off.

FIG. 4 is a simplified high-level flowchart 400 depicting a method ofdisplaying graphical objects for a collection and elements of thecollection according to an embodiment of the present invention. Themethod depicted in FIG. 4 may be performed by software modules (code,instructions) executed by a processor, hardware modules, or combinationsthereof. The processing may be performed by a system such as system 100depicted in FIG. 1. Flowchart 400 depicted in FIG. 4 is merelyillustrative of an embodiment of the present invention and is notintended to limit the scope of the present invention. Other variations,modifications, and alternatives are also within the scope of the presentinvention.

As depicted in FIG. 4, a set of input parameters to be used fordisplaying the graphical objects is determined (step 402). The inputsmay include information related to a collection and its elements thatare to be represented using one or more graphical objects. A graphicalobject representing a collection is referred to as a “collectiongraphical object”.

As part of step 402, information related to attributes associated withgraphical objects may be determined. For example, information related tothe inner and outer bounds associated with the graphical objects may bedetermined. The inner and outer bounds for a graphical object may bespecified by a user. In alternative embodiments, the outer bounds for agraphical object may be determined based upon the available space fordisplaying the graphical object and the inner bounds for the object maybe calculated based upon the outer bounds of the graphical object, suchas by shrinking the outer bounds by a certain amount such that the areadefined by the inner bounds lies within the area defined by the outerbounds.

As part of 402, information related to a grid associated with acollection graphical object to be used for representing the collectionmay be determined. The grid lies in a 2-dimensional plane and is a gridof tiled cells. The cells of the grid may be of the same size and shape(a grid of regular-shaped cells) or of different shapes and sizes. Theprocessing performed in 402 may comprise determining the shape and sizeof the cells of the grid.

Other attributes of graphical objects may also be determined such asinformation specifying a shape and size for the graphical objects to bedisplayed, colors or background patterns to be used for displaying thegraphical objects, and the like.

As part of step 402, information related to the collection isdetermined. A list of elements of the collection may be determined. Foreach element of the collection, the one or more cells of the grid of thecollection graphical object associated with the element are determined.An element may be associated with one or more cells of the grid. In oneembodiment, a cell of the collection graphical object grid may beassociated with multiple elements of the collection. In an alternativeembodiment, a cell of the grid may be associated with at most oneelement of the collection. The alternative embodiment results innon-overlapping display of the graphical objects representing theelements of the collection.

The collection graphical object is then displayed (step 404). Thecollection graphical object may be rendered or drawn on a visual outputdevice such as a screen or monitor. In a colored user interface, thecollection graphical object may be displayed using a particular coloraccording to a color scheme. Information representative of thecollection may be displayed along with the graphical object. The gridassociated with the collection graphical object may or may not bedisplayed as part of step 404.

A graphical object is then displayed for each element of the collection(step 406). The graphical object for an element of the collection isdisplayed such that the displayed graphical object occupies one or morecells of the grid of the collection graphical object that are associatedwith the element represented by the graphical object. As part of 406,the grid associated with the collection graphical object may be scaledand/or positioned such that all the cells of the grid that areassociated with elements of the collection are all located within thebounds of the graphical object representing the collection. Thegraphical objects representing the elements of the collection are thendisplayed in the cells associated with the elements represented by thegraphical objects. In one embodiment, the grid of the collectiongraphical object is scaled and positioned such that all graphicalobjects representing the elements of the collection are displayed aslarge as possible while being displayed within the bounds of thecollection graphical object. In one embodiment, the graphical objectsrepresenting the elements of the collection are displayed within theinner bounds of the graphical object representing the collection. Inalternative embodiments, for example in scenarios where a graphicalobject does not have an inner bounds or the inner bounds is the same asthe outer bounds, the graphical objects representing the elements may bedrawn within the outer bounds of the collection graphical object.

In the manner described above, a graphical object may be displayed for acollection and one or more graphical objects may be displayedrepresenting elements of the collection such that the graphical objectsfor the elements are displayed within the bounds (typically innerbounds) of the graphical object representing the collection. Aspreviously described, an element of the collection may itself be acollection (a second collection). The method depicted in FIG. 4 anddescribed above may then be re-executed for drawing graphical objectsrepresentative of elements of the second collection. In this manner, themethod depicted in FIG. 4 and described above may be used to drawgraphical objects for collections and elements of collections at variouslevels of the collection hierarchy. Where at most one element of acollection is associated with a cell, the graphical objects displayed atthe various collection levels are all visible at the same time. Thegraphical objects are also individually selectable at the same time. Aspreviously described, a graphical object may be selected using an inputdevice such as a mouse, trackball, touchpad, pen, etc. Differenttechniques may be used for showing a selected graphical object such asemphasizing the border of the selected graphical object, changing thecolor or transparency of the selected graphical object, etc.

The graphical objects may be displayed in various different ways. In oneembodiment, different colors may be used to display the graphicalobjects such that the containment relationship is clearly visible. Thecolors that are used may be based upon a user-configured color scheme.The colors may also be automatically chosen to increase the aestheticvalue of the display. In one embodiment, a graphical object for anon-collection element may be displayed such that the display provides avisual indication of the nature or contents of the element. For example,if the element is a document, a graphical object displayed for thedocument may display a visual representation generated based upon thecontents of the document. For example, a thumbnail may be created basedupon the contents of the document and the thumbnail may be displayed aspart of the graphical object representing the document.

The grid associated with a graphical object representing a collectionand used for displaying the graphical objects representing the elementsof the collection (as done in step 406 of FIG. 4) may comprise tiledregular-shaped cells or non-regular shaped cells.

FIG. 5 is a simplified high-level flowchart 500 depicting a method ofdisplaying graphical objects for a collection and its elements accordingto an embodiment of the present invention wherein the grid associatedwith graphical object representing the collection comprises regularshaped cells. The method depicted in FIG. 5 further assumes that theinner bounds of each graphical object is rectangular shaped and that thecells of the grid associated with a graphical object are non-overlappingsquare cells. The method depicted in FIG. 5 may be performed by softwaremodules (code, instructions) executed by a processor, hardware modules,or combinations thereof. The processing may be performed by a systemsuch as system 100 depicted in FIG. 1. Flowchart 500 depicted in FIG. 5is merely illustrative of an embodiment of the present invention and isnot intended to limit the scope of the present invention. Othervariations, modifications, and alternatives are also within the scope ofthe present invention.

As depicted in FIG. 5, input parameters to be used by the displayprocess are determined (step 502). According to an embodiment of thepresent invention, the following parameters are determined:

(1) Collection information—This information identifies a collection anda list of elements within the collection;

(2) An area defined by an outer bounds of the graphical objectrepresenting a collection of elements. The area is defined as arectangular region with the corners (OB_(x), OB_(y)),(OB_(x)+OB_(width), OB_(y)), (OB_(x)+OB_(width), OB_(y)+OB_(height)),(OB_(x), OB_(y)+OB_(height)) in the coordinate system of the innerbounds of the graphical object (C_(IB)) in which the graphical objectrepresenting the collection is being rendered. OB_(width) represents thewidth and OB_(height) the height of the graphical object representingthe collection (i.e., the width and height of the outer bounds of thegraphical object).

(3) Information for determining an inner bounds for the graphical objectrepresenting the collection. In one embodiment, two different kinds ofmargins are provided, namely, a grid gutter parameter and a table fringeparameter. The grid gutter parameter specifies the margin between theedge or outer bounds of the graphical object representing the collection(the collection graphical object) and the start of the grid linesassociated with the collection graphical object. For example, reference606 in FIG. 6 points to a grid gutter parameter margin for a graphicalobject 600 having an associated grid 602 and an outer bounds 604. In oneembodiment, the grid gutter parameter defaults to 3% of either the widthor height of the outer bounds of the collection graphical object,whichever has a lower value. The table fringe parameter specifies themargin between the start of the displayed portion of the grid and thefirst occupied cell. For example, reference 608 in FIG. 6 points to atable fringe parameter margin for graphical object 600 having anassociated grid 602 and an outer bounds 604. This margin insures that a“fringe” of the edges of empty cells surround the main area, creatingthe impression that the user is seeing just a small part of an infinitegrid. In one embodiment, this defaults to 5% of either the width orheight of the outer bounds of the collection graphical object, whicheveris smaller. In one embodiment, the inner bounds for the collectiongraphical object is calculated as the outer bounds minus these twomargins. In FIG. 6, the inner bounds of graphical object 600 is depictedby dotted line 610. The values for grid gutter and table fringeparameters may be specified by a user or automatically determined basedupon the dimensions of a graphical object.

(4) Information related to a grid associated with the graphical objectrepresenting the collection. In one embodiment, the grid is defined asan infinite tiling of non-overlapping square cells, all cells being thesame height and width, and in the same orientation as the rectangularouter bounds. In one embodiment, cell positions are defined in thegrid's own coordinate system (C_(g)) as an (x,y) coordinate where x andy are integers representing the location of the top-left corner of asingle 1×1 cell in the grid. Coordinates in C_(g) space may be convertedinto the coordinate space (C_(IB)) of the inner bounds of the graphicalobject representing a collection by applying the transformationT_(g→IB), the transformation comprising of a scaling component S_(g→IB),a horizontal translation component X_(g→IB) and a vertical translationcomponent Y_(g→IB). If the grid is neither scaled nor repositionedrelative to C_(IB) (that is, if S_(g→IB)=1 and X_(g→IB) and Y_(g→IB) areboth 0) then each cell of the grid will be at the same location as thepoint in C_(IB) with the same corresponding coordinates.

(5) For each element of the collection, information identifying a listof one or more cells from the grid of the collection graphical objectthat are associated with the element. In one embodiment, the informationfor each element identifies position information and span information,where the position of an element E of the collection is the x,ycoordinate (E_(x), E_(y)) of the top-left cell of the grid associatedwith the element and span is (E_(width), E_(height)) as measured ininteger numbers of cells of the grid. The area defined by the union ofcells that are associated with elements of a collection is called theoccupied area of the grid.

After determining the input parameters, a minimum bounding box of theinner bounds of the graphical object representing the collection isdetermined (step 504). The inner bounds of the collection graphicalobject may be calculated as follows:

Grid-Gutter (GG)=K ₁*Minimum(OB _(Width) , OB _(height))

where K₁ is some user-configurable constant which defaults to 0.03 andOB_(width) and OB_(height) are width and height parameters of the outerbounds of the collection graphical object.

Table-Fringe (TF)=K ₂*Minimum(OB _(width) , OB _(height))

where K2 is some user-configurable constant which defaults to 0.05The minimum bounding box of the inner bounds is defined in C_(IB) as therectangular region with top-left corner at (IB_(x), IB_(y)) anddimensions (IB_(width), IB_(height)), where:

IB _(x) =OB _(x) +GG+TF

IB _(y) =OB _(y) +GG+TF

and

IB _(width) =OB _(width) −GG−TF

IB _(height) =OB _(height) −GG−TF

A minimum bounding box of the occupied area in both C_(g) space (OA) andC_(IB) space (OAIB) is then calculated (step 506). As previouslyindicated, the occupied area is the area corresponding to the union ofall cells in the grid that are associated with at least one element of acollection. As part of 506, first the minimum and maximum x and ycoordinate values for the occupied area are determined using thefollowing algorithm:

Set min_(x)=+Infinity

Set max_(x)=−Infinity

Set min_(y)=+Infinity

Set max_(y)=−Infinity

Loop for each element, E, in the collection:

Set min_(x)=Minimum(E_(x), min_(x))

Set max_(x)=Maximum(E _(x) +E _(width), max_(x))

Set min_(y)=Minimum(E _(y), min_(y))

Set max_(y)=Maximum(E _(y) +E _(height), max_(y))

The minimum bounding box of the occupied area is defined in C_(g) as therectangular region on the grid starting with the top-left cell at(OA_(x), OA_(y)) where

OA_(x)=min_(x)

OA_(y)=min_(y)

and with dimensions:

OA _(width)=max_(x)−min_(x)

OA _(height)=max_(y)−min_(y)

The minimum bounding box of the occupied area is defined in C_(IB) as

OAIB=OA transformed into C_(IB) by T_(g→IB)

If the grid's current scaling S_(g→IB) is 1 and position offsets(X_(g→IB) and Y_(g→IB)) are both zero then OAIB=OA.

The grid is then scaled and positioned such that the occupied area iscentered inside the inner bounds of the graphical object representingthe collection (step 508). This may be done as follows. Given a currentscaling for the grid “old S_(g→IB)”, a new scaling for the grid isselected as

S _(g→IB)=Minimum(IB _(width) /OAIB _(width) , TB _(height) /OAIB_(height))*(old S _(g→IB))

In one embodiment, the positioning is done as follows:

set IB-mid_(x) =IB _(x)+(IB _(width)/2)

set IB-mid_(y) =IB _(y)+(IB _(height)/2)

set OAIB-mid_(x) =OAIB _(x)+(OAIB _(width)/2)

set OAIB-mid_(y) =OAIB _(y)+(OAIB _(height)/2)

set Offset_(x) =IB-mid_(x) −OAIB-mid_(x)

set Offset_(y) =IB-mid_(y) −OAIB-mid_(y)

set X_(g→IB) such that the grid is moved by Offset_(x) to the right

set Y_(g→IB) such that the grid is moved by Offset_(y) down

The processing performed in 508 is iterative, and takes into account theprevious scaling and position. The iterative scaling and reposition isperformed until the occupied area is centered inside the inner bounds ofthe graphical object representing the collection.

Upon completion of step 508, the grid of the collection graphical objecthas a scale and position determined by a new T_(g→IB) and all grid cellsof the graphical object associated with the collection elements arefully contained within the inner bounds of the graphical objectrepresenting the collection. A graphical object is then displayed foreach element of the collection such that the graphical object for anelement occupies one or more cells of the scaled and positioned grid ofthe collection graphical object that are associated with the elementrepresented by the graphical object (step 510). Since the cellsassociated with elements are all positioned within the inner bounds ofthe collection graphical object (as a result of the processing performedin 508), the graphical objects representing the elements of thecollection are automatically displayed within the inner bounds of thecollection graphical object.

In one embodiment, an additional margin is added between the edge ofeach graphical object representing an element of the collection and thegrid lines of a cell. In one embodiment, this additional margin defaultsto 7.5% of the width and height of a single cell in the grid. Thisensures that some spacing exists between the outer bounds of graphicalobjects and the grid lines when the graphical objects are displayed.This additional element margin ensures that graphical objectsrepresenting two elements that nominally are associated with adjoininggrid cells will be rendered with a small space between them.

The method depicted in FIG. 5 and described may be used to displayvarious collection graphical objects and graphical objects forcollections and their elements at different levels of the collectionhierarchy. Examples of user interface displays generated by applying themethod depicted in FIG. 5 are shown in FIGS. 3A and 3B.

FIG. 7 is a simplified high-level flowchart 700 depicting a generalizedmethod of displaying graphical objects for a collection and its elementsaccording to an embodiment of the present invention. The method depictedin FIG. 7 makes no assumptions about the shape or size of the graphicalobjects including the graphical object representing a collection. Themethod also makes no assumptions of the shape and size of individualcells of a grid associated with a collection graphical object, orwhether cells are all the same shape and size. Further, no assumptionsare made whether elements occupy contiguous cells or even whether thegraphical object representing the collection is itself contiguous. Inone embodiment, the method uses an O(N3) algorithm and performsprocessing by searching the entire space of scales and 2D positions tofind a position and scale whereby the graphical objects for the elementsof a collection are displayed within the bounds (typically inner bounds)of the graphical object representing the collection. The method depictedin FIG. 7 may be performed by software modules (code, instructions)executed by a processor, hardware modules, or combinations thereof. Theprocessing may be performed by a system such as system 100 depicted inFIG. 1. Flowchart 700 depicted in FIG. 7 is merely illustrative of anembodiment of the present invention and is not intended to limit thescope of the present invention. Other variations, modifications, andalternatives are also within the scope of the present invention.

As depicted in FIG. 7, processing starts by determining the inputparameters to be used for displaying the graphical objects for thecollection hierarchy (step 702). According to an embodiment of thepresent invention, the following parameters are determined:

(1) Collection information—This information identifies a collection anda list of elements within the collection;

(2) An area defined by an inner bounds of the graphical objectrepresenting a collection of elements. This area is defined as a set ofone or more finite 2-dimensional regions defined in the coordinatesystem (C_(IB)) in which the graphical object representing thecollection is being represented.

(3) Description of a grid associated with the graphical objectrepresenting the collection. The grid associated with a graphical objectrepresenting a collection is defined as an area completely covered bynon-overlapping cells. The cells of the grid may be of different sizesand shapes, and the area covered may be infinite (as is the case of asimple tiling of squares in an infinite matrix) or finite. Cellpositions in the grid are defined in the grid's own coordinate system(C_(g)). Coordinates in C_(g) space can be converted into C_(IB) spaceby applying the transformation T_(g→IB), the transformation comprisingof a scaling component S_(g→IB), a horizontal translation componentX_(g→IB), and a vertical translation component Y_(g→IB).

(4) For each element in the collection, information identifying a listof one or more cells from the grid of the collection graphical objectthat are associated with the element. The area defined by the union ofcells of the grid that are associated with at least one element of thecollection is called the occupied area.

Referring back to FIG. 7, the minimum bounding box of the inner boundsof the graphical object representing the collection is calculated (step704). The minimum bounding box of the inner bounds is defined in C_(IB)as the rectangular region with top-left corner at (IB_(x), IB_(y)), anddimensions (IB_(width), IB_(height)), where:

IB _(x)=the x-coordinate of the left-most point of the inner bounds

IB _(y)=the y-coordinate of the top-most point of the inner bounds

IB _(width)=(the x-coordinate of the right-most point of the innerbounds)−IB _(x)

IB _(height)=(the y-coordinate of the bottom-most point of the innerbounds)−IB _(y)

The minimum bounding box of the occupied area is then calculated (step706). The minimum bounding box of the occupied area is defined in C_(g)as the rectangular region with top-left corner at (OA_(x), OA_(y)), anddimensions (OA_(width), OA_(height)), where:

OA _(x)=the x-coordinate of the left-most point of the occupied area

OA _(y)=the y-coordinate of the top-most point of the occupied area

OA _(width)=(the x-coordinate of the right-most point of the occupiedarea)−OA _(x)

OA _(height)=(the y-coordinate of the bottom-most point of the occupiedarea)−OA _(y)

The minimum bounding box of the occupied area calculated in C_(g)coordinate system is then transformed to a bounding box OAIB of theoccupied area in C_(IB) using the transform T_(g→IB).

The scale and position of the grid associated with the graphical objectrepresenting the collection is then adjusted such that all the cells ofthe grid associated with one or more elements of the collection fallwithin the bounds (typically the inner bounds) of the graphical objectrepresenting the collection (step 708). In one embodiment, theprocessing performed in 708 is as follows:

Given a current scaling for the grid “old S_(g→IB)”, a new scaling forthe grid is picked for the grid as follows,

S _(g→IB)=Minimum(IB _(width) /OA _(width) , IB _(height) /OA_(height))*(old S _(g→IB))

A parameter Scale-Found is set to falseThe following “While” loop is then executed

While not Scale-Found:

- Set X_(g→IB) and Y_(g→IB) such that T_(g→IB)((OA_(x), OA_(y))) =(IB_(x), IB_(y)), which moves the grid such that the upper-left cornerof the bounding box of the occupied area is at the same position as theupper-left corner of the bounding box of the inner bounds. - While (notScale-Found) and (the y-coordinate of T_(g→IB)((OA_(x) + OA_(width),OA_(y) + OA_(height))) <= IB_(y) + IB_(height)):   -- Set X_(g→IB) suchthat the x-coordinate of T_(g→IB)((OA_(x), OA_(y))) = IB_(x)   -- While(not Scale-Found) and the (the x-coordinate of T_(g→IB)((OA_(x) +OA_(width),   OA_(y) + OA_(height))) <= IB_(x) + IB_(width)):     --- If(no part of the occupied area (as transformed by T_(g→IB)) overlaps a    region outside of the inner bounds):       ---- set Scale-Found totrue       --- else         ---- Set X_(g→IB) such that the grid ismoved further to the right by         ε_(x), where ε_(x) is small.   --If not Scale-Found, Set Y_(g→IB) such that the grid is moved furtherdown by   ε_(y), where ε_(y) is small. - If not Scale-Found, shrink thegrid slightly by reducing S_(g→IB) by ε_(S), where ε_(S) is smallAt the end of the above processing, the grid has a scale and positiondetermined by T_(g→IB) and all cells of the grid associated withelements of the collection are now fully contained within the innerbounds of the graphical object representing the collection. In oneembodiment, the grid is scaled and positioned such that the geometriccenter (centroid) of the minimal bounding box of the occupied area isthe same as the geometric center (centroid) of the graphical objectrepresenting the collection.

A graphical object is then displayed for each element of the collectionsuch that the graphical object for an element occupies one or more cellsof the scaled and positioned grid of the collection graphical objectthat are associated with the element represented by the graphical object(step 710). The graphical object for an element is drawn in the one ormore cells of the grid associated with the element. Since the grid isscaled and positioned such that all cells associated with elements ofthe collection are positioned within the inner bounds of the graphicalobject representing the collection, all the graphical objects for theelements are positioned and displayed within the inner bounds of thegraphical object representing the collection.

In the previous description, the graphical objects representing elementsof a collection are displayed within the inner bounds of the graphicalobject representing the collection, where the inner bounds is determinedbased upon the outer bounds of the graphical object representing thecollection. As previously described, the inner bounds of a graphicalobject may be the same as or less than the outer bounds, In embodimentswhere the inner bounds is the same as the outer bounds, either the innerbounds or the outer bounds of the collection graphical object may beused for the various calculations.

The displayed graphical objects, including the graphical objectrepresenting the collection and the graphical objects representingelements of the collection, are individually selectable. One or moregraphical objects may be selected at a time. When a selection is madeusing an input device such as a mouse, there may be one or moregraphical objects representing elements or collections under the cursorof pointing device. In such a scenario, in one embodiment, the graphicalobject representing the most deeply-nested element (which may be acollection or a non-collection) under the cursor and that is alsoavailable for selection is selected. This is usually the visible, or “ontop” element, though it may be that the most on-top element is notavailable for selection at which time selection will cascade to theelement's parent. The most common example of such a case is whenselecting a graphical object representing a collection into which anelement is to be dropped: the graphical object representing the elementbeing dragged is not available for selection (even though it is, bydefinition, under the cursor) and there might be a graphical objectrepresenting a non-collection directly under the cursor, but what getsselected for the drop-zone is the graphical object representing thetop-most available collection.

One or more operations may be performed using the selected graphicalobjects. Operations performed on a graphical object generally cause theoperation to be performed on an element or collection represented by thegraphical object. For example, double clicking a graphical object mayopen the element (e.g., a document) represented by the graphical object.Operations may be also performed that affect the manner in which thegraphical objects are displayed without affecting the elementsrepresented by the graphical objects. Examples of some operations areprovided below.

(1) Resizing a graphical object displayed within a collection graphicalobject: A graphical object representing an element of a collection maybe resized. The resize operation may cause a change in the cells of thegrid associated with the element represented by the resized graphicalobject. This may cause a change in the display of other graphicalobjects representing other elements within the collection. In oneembodiment, the method depicted in FIG. 7 and described above is thenre-executed to redisplay the graphical objects representing the elementsof the collection. In the re-execution, the “new” cells associated withthe element represented by the resized graphical object are used for thecalculations. If the resized graphical object itself represents acollection (a second collection), then the graphical objects that havebeen displayed representing elements of the second collection may beaffected by the resizing. In one embodiment, the method depicted in FIG.7 and described above is then rerun to redisplay the graphical objectsrepresenting the elements of the second collection.

(2) Repositioning a graphical object within a collection graphicalobject: The location of a graphical object representing an element of acollection may be changed within the bounds of the collection graphicalobject. The reposition operation may cause a change in the cells of thegrid associated with the element represented by the repositionedgraphical object. This may cause a change in the display of othergraphical objects representing other elements within the collection. Inone embodiment, the method depicted in FIG. 7 and described above isthen rerun to redisplay the graphical objects representing the elementsof the collection. In the rerun, the “new” cells associated with theelement represented by the repositioned graphical object are used forthe calculations.

(3) Adding an element to a collection: An element may be added to acollection. A graphical object representing the newly added element isthen displayed. The display of the new graphical object may cause aredisplay of all the other graphical objects representing other elementsof the collection. In one embodiment, the method depicted in FIG. 7 anddescribed above is re-executed, now with the newly added element. Aspart of the processing, one or more cells of the grid associated withthe newly added element are determined and used for the calculations.

(4) Deleting an element from a collection: An element may be deletedfrom a collection. After a deletion, the graphical object displayed forthe element is no longer displayed. In one embodiment, the methoddepicted in FIG. 7 and described above is re-executed, now without thedeleted element.

As previously described, a graphical object is individually selectable.One or more graphical objects may be selected at a time and operationsperformed on the selected set of graphical objects. Drag and dropoperations may be performed using a selected graphical object. Forexample, an element may be deleted from a first collection and added toa second collection by selecting the graphical object representing theelement, dragging the selected graphical object from the graphicalobject representing the first collection and dropping it into agraphical object representing the second collection. When the selectedgraphical object is dropped into the graphical object representing thesecond collection, the selected graphical object may snap to one or morecells of the grid of the graphical object representing the secondcollection. The cells to which the selected graphical object snaps toare then associated with the element represented by the selectedgraphical object. In a grid comprising rectangular cells, a draggedgraphical object's drop zone may be calculated as the nearest patch ofempty cells of the grid that are large enough to hold the selectedgraphical object. The graphical objects representing elements of thefirst collection and the second collection may be redrawn after the dragand drop operation as previously described.

According to an embodiment of the present invention, when the graphicalobjects representing elements of a collection are redisplayed, theposition of each graphical object displayed within the bounds of thecollection graphical object relative to other graphical objectsdisplayed within the bounds of the collection graphical object is thesame as prior to the redisplaying operation. The size of each graphicalobject displayed within the bounds of the collection graphical objectrelative to other graphical objects displayed within the bounds of thecollection graphical object is the same as prior to the redisplaying.Further, in one embodiment, the aspect ratio of each graphical object isthe same as the aspect ratio of the graphical object prior to theredisplaying.

The techniques described above may be used to display graphical objectsrepresenting collections and non-collections at different collectionhierarchies. In situations where the collection hierarchy is very deep(e.g., tens or hundreds of nested collections), if the techniquespreviously described were followed, then a lot of time could be wastedin rendering graphical objects representing elements that wind up beingdisplayed less than a single pixel in size. Several techniques may beused to reduce such an occurrence. In one embodiment, the displaytechniques are modified such that if a graphical object representing acollection is computed as having a width or height smaller than acertain threshold, then the graphical object is rendered as an emptycollection and the collection treated as an empty collection forpurposes of displaying the collection hierarchy. In this manner, thedisplay computation is stopped at the level of the “empty” collection.

Further, displayed graphical objects that are very small in size maybecome difficult to select using an input device such as a mouse. Due tothis, a size limit or threshold may be set for performing selectiontasks. If a graphical object representing an element in a collectionthat is being rendered is smaller than a threshold size (e.g., athreshold width or height) then the graphical object is not consideredavailable for selection.

Embodiments of the present invention may also be used to representcollections that represent not just nested hierarchies (i.e., trees) butalso webs (directional graphs) where a particular object might appear asan element in multiple collections. One such example is a visualizationof a web site, where every page is a collection and every page linked toby that page is represented as an element within the collection. Such avisualization might even have infinitely-nested collections, where Acontains B and B contains A.

FIGS. 8A, 8B, 8C, 8D, 8E, 8F, 8G, 8H, 8I, 8J, and 8K depict examples ofgraphical objects drawn according to an embodiment of the presentinvention. FIG. 8A depicts a graphical object 800 for an emptycollection (i.e., a collection with no elements). A grid 802 isassociated with graphical object 800 and displayed. A non-collectionelement is then added to the collection. FIG. 8B depicts graphicalobjects representing the collection with one element. A graphical object804 is drawn representing the element within a cell of grid 802. In FIG.8C, the graphical object 804 has been resized such that it now occupiestwo cells of grid 802. Grid 802 is scaled and resized such that thecells occupied by the element represented by graphical object 804 fallwithin the bounds of collection graphical object 800.

In FIG. 8D, a second element has been added to the collection.Accordingly, a second graphical object 806 representing the secondelement is now displayed within the bounds of collection graphicalobject 800. Grid 802 is scaled and resized such that the cells occupiedby the elements represented by graphical objects 804 and 806 fall withinthe bounds of collection graphical object 800. When compared to FIG. 8Cit can be seen that the size of the cells of grid 802 has been reduceddue to scaling down of grid 802 in order to fit both the graphicalobject for the first element and the graphical object for the secondelement.

In FIG. 8E, graphical object 806 representing the second element hasbeen repositioned within graphical object 800. Grid 802 is scaled andresized such that the cells occupied by the elements represented bygraphical objects 804 and 806 fall within the bounds of collectiongraphical object 800. When compared to FIG. 8D it can be seen that thesize of the cells of grid 802 has been reduced due to scaling down ofgrid 802 in order to fit the repositioned graphical object for thesecond element.

In FIG. 8F, a third element has been added to the collection depicted inFIG. 8D. A new graphical object 808 is displayed to represent the thirdelement. In FIG. 8G, both the graphical object 806 representing thesecond element and the graphical object 808 representing the thirdelement have been resized to occupy only one cell of grid 802. Grid 802is scaled and resized (reduced in size) such that the cells occupied bythe elements represented by graphical objects 804, 806, and 808 fallwithin the bounds of collection graphical object 800 and the graphicalobjects are displayed as large as possible. As can be seen, the size ofthe cells of grid 802 has been increased from the size of the cells inFIG. 8F.

In FIG. 8H, graphical object 806 representing the second element hasbeen resized (increased in size) and graphical object 808 representingthe third element has been repositioned such that it occupies adifferent cell of grid 802. Grid 802 is once again scaled and resizedsuch that the cells occupied by the elements represented by graphicalobjects 804, 806, and 808 fall within the bounds of collection graphicalobject 800. In FIG. 8I, graphical object 808 representing the thirdelement has been repositioned to a further right position. Grid 802 isonce again scaled and resized such that the cells occupied by theelements represented by graphical objects 804, 806, and 808 fall withinthe bounds of collection graphical object 800. When compared to FIG. 8Hit can be seen that the size of the cells of grid 802 have been reduceddue to scaling down of grid 802 in order to fit the repositionedgraphical object 808.

FIG. 8J depicts a scenario representing a collection (first collection)comprising three elements, one of which is another collection (a secondcollection) comprising three elements. A graphical object 800 with grid802 is drawn representing the first collection. Graphical objects 804,806, and 808 are drawn representing the three elements of the firstcollection with graphical object 808 representing the element which isthe second collection. A grid 810 is associated with graphical object808. Graphical objects 812, 814, and 816 representing the three elementsof the second collection are displayed within the bounds of graphicalobject 808 representing the second collection. Grid 810 is scaled andresized such that the cells occupied by the elements represented bygraphical objects 812, 814, and 816 fall within the bounds of collectiongraphical object 808.

In FIG. 8K, a fourth element has been added to the first collectionrepresented in FIG. 8J. A new graphical object 818 representing thefourth element is now displayed within the bounds of graphical object800. Grid 802 is scaled and resized such that the cells occupied by theelements represented by graphical objects 804, 806, 808, and 818 fallwithin the bounds of collection graphical object 800.

Although specific embodiments of the invention have been described,various modifications, alterations, alternative constructions, andequivalents are also encompassed within the scope of the invention. Thedescribed invention is not restricted to operation within certainspecific data processing environments, but is free to operate within aplurality of data processing environments. Additionally, although thepresent invention has been described using a particular series oftransactions and steps, it should be apparent to those skilled in theart that the scope of the present invention is not limited to thedescribed series of transactions and steps.

Further, while the present invention has been described using aparticular combination of hardware and software, it should be recognizedthat other combinations of hardware and software are also within thescope of the present invention. The present invention may be implementedusing hardware, software, or combinations thereof.

The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. It will, however, beevident that additions, subtractions, deletions, and other modificationsand changes may be made thereunto without departing from the broaderspirit and scope of the invention as set forth in the claim.

1. A method of displaying information for a collection comprising aplurality of elements, the method comprising: displaying a firstgraphical object representative of a first collection, the firstgraphical object having an associated first bounds defining an area of acertain shape and size and a grid of tiled cells on a 2-dimensionalplane, wherein each element in the plurality of elements is associatedwith one or more cells of the grid; and displaying a graphical objectfor each element in the plurality of elements of the first collectionsuch that the graphical object for an element is displayed based uponthe one or more cells of the grid associated with the elementrepresented by the graphical object, wherein the displaying comprisesscaling and positioning the grid such that all graphical objectsrepresenting the elements of the first collection are displayed withinthe area defined by the first bounds of the first graphical object. 2.The method of claim 1 wherein positioning the grid comprises positioningthe grid such that a centroid of a span of cells of the grid associatedwith the plurality of elements is same as a centroid of the firstgraphical object.
 3. The method of claim 1 wherein scaling the gridcomprises scaling the grid such that all graphical objects representingthe elements of the first collection are displayed as large as possible.4. The method of claim 1 wherein a second bounds is associated with thefirst graphical object, wherein an area defined by the second bounds iswithin the area defined by the first bounds of the first graphicalobject and the graphical objects representing the plurality of elementsof the first collection are displayed within the second bounds.
 5. Themethod of claim 1 wherein an element of the first collection is acollection.
 6. The method of claim 1 wherein a first cell of the grid isassociated with a first element in the plurality of elements and asecond element in the plurality of elements.
 7. The method of claim 1wherein the scaling and positioning comprises scaling and positioningthe grid such that all cells of the grid associated with the pluralityof elements of the first collection are positioned within the firstbounds of the first graphical object.
 8. The method of claim 1 whereindisplaying a graphical object for each element in the plurality ofelements comprises: determining, for at least one element from theplurality of elements, a set of cells of the grid that are associatedwith the at least one element; and displaying the graphical objectrepresenting the at least one element in a position corresponding to theset of cells of the grid.
 9. The method of claim 8 further comprisingdetermining a minimum bounding box based upon the set of cells.
 10. Themethod of claim 1 further comprising displaying the grid associated withthe first graphical object.
 11. The method of claim 1 wherein at leastone element in the plurality of elements of the first collection is asecond collection comprising a set of one or more elements, the methodfurther comprising: displaying a graphical object for each element inthe second collection such that the graphical object for an element isdisplayed based upon one or more cells of a grid of the graphical objectrepresenting the second collection that are associated with the elementrepresented by the graphical object, wherein the displaying comprisesscaling and positioning the grid associated with the graphical objectrepresenting the second collection such that all graphical objectsrepresenting the elements of the second collection are displayed withinan area defined by a bounds associated with the graphical objectrepresenting the second collection.
 12. The method of claim 1 furthercomprising: receiving information indicative of addition of a newelement to the first collection; scaling and positioning the grid suchthat all cells of the grid associated with the plurality of elements ofthe first collection, including the new element, are positioned withinthe first bounds of the first graphical object representing the firstcollection; and redisplaying a graphical object for each element in theplurality of elements of the first collection such that the graphicalobject for an element is displayed in a position corresponding to theone or more cells of the grid associated with the element and thegraphical objects representing the plurality of elements of the firstcollection are displayed within the first bounds of the first graphicalobject.
 13. The method of claim 1 further comprising: receivinginformation indicative of deletion of an element from the firstcollection; scaling and positioning the grid such that all cells of thegrid associated with the plurality of elements of the first collection,excluding the deleted element, are positioned within the first bounds ofthe first graphical object representing the first collection; andredisplaying a graphical object for each element in the plurality ofelements of the first collection such that the graphical object for anelement is displayed in a position corresponding to the one or morecells of the grid associated with the element and the graphical objectsrepresenting the plurality of elements of the first collection aredisplayed within the first bounds of the first graphical object.
 14. Themethod of claim 1 further comprising: receiving information indicativeof a change in size or position of a graphical object representing afirst element in the first collection; scaling and positioning the gridsuch that all cells of the grid associated with the plurality ofelements of the first collection, including the first element, arepositioned within the first bounds of the first graphical objectrepresenting the first collection; and redisplaying a graphical objectfor each element in the plurality of elements of the first collectionsuch that the graphical object for an element is displayed in a positioncorresponding to the one or more cells of the grid associated with theelement and the graphical objects representing the plurality of elementsof the first collection are displayed within the first bounds of thefirst graphical object.
 15. The method of claim 1 wherein the cells ofthe grid are of same size and shape.
 16. A system for displayinginformation for a collection, the system comprising: a processor; and adisplay; wherein the processor is configured to: cause a first graphicalobject representing a first collection to be displayed on the display,the first graphical object having an associated first bounds defining anarea of a certain shape and size and a grid of tiled cells on a2-dimensional plane, wherein each element in the plurality of elementsis associated with one or more cells of the grid; and cause a graphicalobject to be displayed on the display for each element in the pluralityof elements of the first collection such that the graphical object foran element is displayed based upon the one or more cells of the gridassociated with the element represented by the graphical object, whereinthe displaying comprises scaling and positioning the grid such that allgraphical objects representing the elements of the first collection aredisplayed within the area defined by the first bounds of the firstgraphical object.
 17. The system of claim 16 wherein the processor isconfigured to position the grid such that a centroid of a span of cellsof the grid associated with the plurality of elements is same as acentroid of the first graphical object.
 18. The system of claim 16wherein the processor is configured to scale the grid such that allgraphical objects representing the elements of the first collection aredisplayed as large as possible.
 19. The system of claim 16 wherein asecond bounds is associated with the first graphical object, wherein anarea defined by the second bounds is within the area defined by thefirst bounds of the first graphical object and the graphical objectsrepresenting the plurality of elements of the first collection aredisplayed within the second bounds.
 20. The system of claim 16 whereinan element of the first collection is a collection.
 21. The system ofclaim 16 wherein a first cell of the grid is associated with a firstelement in the plurality of elements and a second element in theplurality of elements.
 22. The system of claim 16 wherein the processoris configured to scale and position the grid such that all cells of thegrid associated with the plurality of elements of the first collectionare positioned within the first bounds of the first graphical object.23. The system of claim 16 wherein the processor is configured to:determine, for at least one element from the plurality of elements, aset of cells of the grid that are associated with the at least oneelement; and display the graphical object representing the at least oneelement in a position corresponding to the set of cells of the grid. 24.The system of claim 23 wherein the processor is configured to determinea minimum bounding box based upon the set of cells.
 25. The system ofclaim 16 wherein the processor is configured to display the gridassociated with the first graphical object.
 26. The system of claim 16wherein at least one element in the plurality of elements of the firstcollection is a second collection comprising a set of one or moreelements, and the processor is configured to: cause a graphical objectto be displayed on the display for each element in the second collectionsuch that the graphical object for an element is displayed based uponone or more cells of a grid of the graphical object representing thesecond collection that are associated with the element represented bythe graphical object, wherein the displaying comprises scaling andpositioning the grid associated with the graphical object representingthe second collection such that all graphical objects representing theelements of the second collection are displayed within an area definedby a bounds associated with the graphical object representing the secondcollection.
 27. The system of claim 16 wherein the processor isconfigured to: receive information indicative of addition of a newelement to the first collection; scale and position the grid such thatall cells of the grid associated with the plurality of elements of thefirst collection, including the new element, are positioned within thefirst bounds of the first graphical object representing the firstcollection; and cause a graphical object to be redisplayed on thedisplay for each element in the plurality of elements of the firstcollection such that the graphical object for an element is displayed ina position corresponding to the one or more cells of the grid associatedwith the element and the graphical objects representing the plurality ofelements of the first collection are displayed within the first boundsof the first graphical object.
 28. The system of claim 16 wherein theprocessor is configured to: receive information indicative of deletionof an element from the first collection; scale and position the gridsuch that all cells of the grid associated with the plurality ofelements of the first collection, excluding the deleted element, arepositioned within the first bounds of the first graphical objectrepresenting the first collection; and cause a graphical object to beredisplayed on the display for each element in the plurality of elementsof the first collection such that the graphical object for an element isdisplayed in a position corresponding to the one or more cells of thegrid associated with the element and the graphical objects representingthe plurality of elements of the first collection are displayed withinthe first bounds of the first graphical object.
 29. The system of claim16 wherein the processor is configured to: receive informationindicative of a change in size or position of a graphical objectrepresenting a first element in the first collection; scale and positionthe grid such that all cells of the grid associated with the pluralityof elements of the first collection, including the first element, arepositioned within the first bounds of the first graphical objectrepresenting the first collection; and cause a graphical object to beredisplayed on the display for each element in the plurality of elementsof the first collection such that the graphical object for an element isdisplayed in a position corresponding to the one or more cells of thegrid associated with the element and the graphical objects representingthe plurality of elements of the first collection are displayed withinthe first bounds of the first graphical object.
 30. The system of claim16 wherein the cells of the grid are of same size and shape.
 31. Acomputer readable medium storing a plurality of instructions forcontrolling a processor to display information, the plurality ofinstructions comprising: instructions that cause the processor todisplay a first graphical object representative of a first collection ona display, the first graphical object having an associated first boundsdefining an area of a certain shape and size and a grid of tiled cellson a 2-dimensional plane, wherein each element in the plurality ofelements is associated with one or more cells of the grid; andinstructions that cause the processor to display on the display agraphical object for each element in the plurality of elements of thefirst collection such that the graphical object for an element isdisplayed based upon the one or more cells of the grid associated withthe element represented by the graphical object, wherein the displayingcomprises scaling and positioning the grid such that all graphicalobjects representing the elements of the first collection are displayedwithin the area defined by the first bounds of the first graphicalobject.